﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

namespace sistemaAcademicoFinanceiroEscolas
{
    public partial class realizarMatricula : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            //lstTurma.Items.Clear();

            if (!Page.IsPostBack)
            {

                //Escrever o nome do aluno

                codigoAluno.Value = Request.QueryString["codigoAluno"];
                //Pegar nome do aluno
                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                //Resgatar o nome do aluno
                string q = "select codigoAluno, nomeAluno from aluno where codigoAluno=" + Request.QueryString["codigoAluno"];
                SqlCommand cmd = new SqlCommand(q, sqlc);
                SqlDataReader myReader = cmd.ExecuteReader();

                while (myReader.Read())
                {
                    string nomeAluno = myReader["nomeAluno"].ToString();

                    lblNomeAluno.Text = nomeAluno;

                }

                //nome do aluno escrito

                cmd.Dispose();
                myReader.Close();

                //carregar anos letivos

                string sqlAnoLetivo = "select * from anoLetivo";

                SqlCommand cmdAnoLetivo = new SqlCommand(sqlAnoLetivo, sqlc);
                SqlDataReader myReaderAnoLetivo = cmdAnoLetivo.ExecuteReader();

                ListItem anoLetivoSelecione = new ListItem();
                anoLetivoSelecione.Value = "0";
                anoLetivoSelecione.Text = "Selecione um Ano Letivo";

                lstAnoLetivo.Items.Add(anoLetivoSelecione);

                while (myReaderAnoLetivo.Read())
                {

                    ListItem anoLetivo = new ListItem();

                    anoLetivo.Value = myReaderAnoLetivo["codigoAnoLetivo"].ToString();
                    anoLetivo.Text = myReaderAnoLetivo["descricaoAnoLetivo"].ToString();

                    lstAnoLetivo.Items.Add(anoLetivo);

                }

                cmdAnoLetivo.Dispose();
                myReaderAnoLetivo.Close();


                //carregar dia pagamento mensalidade

                string sqldiaPagamento = "select * from diaPagamento";

                SqlCommand cmddiaPagamento = new SqlCommand(sqldiaPagamento, sqlc);
                SqlDataReader myReaderdiaPagamento = cmddiaPagamento.ExecuteReader();

                ListItem diaPagamentoSelecione = new ListItem();
                diaPagamentoSelecione.Value = "0";
                diaPagamentoSelecione.Text = "Selecione o dia do pagamento";

                lstDiaPagamento.Items.Add(diaPagamentoSelecione);

                while (myReaderdiaPagamento.Read())
                {

                    ListItem diaPagamento = new ListItem();

                    diaPagamento.Value = myReaderdiaPagamento["codigoDiaPagamento"].ToString();
                    diaPagamento.Text = myReaderdiaPagamento["descricaoDiaPagamento"].ToString();

                    lstDiaPagamento.Items.Add(diaPagamento);

                }

                cmddiaPagamento.Dispose();
                myReaderdiaPagamento.Close();


                string sqlModalidade = "select * from modalidadeAula";

                SqlCommand cmdModalidade = new SqlCommand(sqlModalidade, sqlc);
                SqlDataReader myReaderModalidade = cmdModalidade.ExecuteReader();

                ListItem ModalidadeSelecione = new ListItem();
                ModalidadeSelecione.Value = "0";
                ModalidadeSelecione.Text = "Selecione a modalidade";

                lstModalidade.Items.Add(ModalidadeSelecione);

                while (myReaderModalidade.Read())
                {

                    ListItem Modalidade = new ListItem();

                    Modalidade.Value = myReaderModalidade["codigoModalidadeAula"].ToString();
                    Modalidade.Text = myReaderModalidade["descricaoModalidade"].ToString();

                    lstModalidade.Items.Add(Modalidade);

                }

                cmdModalidade.Dispose();
                myReaderModalidade.Close();

                string sqlTipo = "select * from tipoPagamento";

                SqlCommand cmdTipo = new SqlCommand(sqlTipo, sqlc);
                SqlDataReader myReaderTipo = cmdTipo.ExecuteReader();

                ListItem TipoSelecione = new ListItem();
                TipoSelecione.Value = "0";
                TipoSelecione.Text = "Selecione o tipo de pagamento";

                lstTipoPagamento.Items.Add(TipoSelecione);

                while (myReaderTipo.Read())
                {

                    ListItem Tipo = new ListItem();

                    Tipo.Value = myReaderTipo["codigoTipoPagamento"].ToString();
                    Tipo.Text = myReaderTipo["descricaoTipoPagamento"].ToString();

                    lstTipoPagamento.Items.Add(Tipo);

                }

                cmdTipo.Dispose();
                myReaderTipo.Close();

                string sqlforma = "select * from formaPagamento";

                SqlCommand cmdforma = new SqlCommand(sqlforma, sqlc);
                SqlDataReader myReaderforma = cmdforma.ExecuteReader();

                ListItem formaSelecione = new ListItem();
                formaSelecione.Value = "0";
                formaSelecione.Text = "Selecione a forma de pagamento";

                lstFormaPagamento.Items.Add(formaSelecione);

                while (myReaderforma.Read())
                {

                    ListItem forma = new ListItem();

                    forma.Value = myReaderforma["codigoFormaPagamento"].ToString();
                    forma.Text = myReaderforma["descricaoFormaPagamento"].ToString();

                    lstFormaPagamento.Items.Add(forma);

                }

                cmdforma.Dispose();
                myReaderforma.Close();

                sqlc.Close();

            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //verificar que serie, turma e analetivo foram selecionados
            if ((lstSerie.SelectedValue != "0") && (lstAnoLetivo.SelectedValue != "0"))
            {

                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                //verificar se o aluno já não está cadastrado neste ano letivo

                string sqlVerificar = "select codigoAluno, codigoAnoLetivo from matricula where codigoAluno=" + Request["codigoAluno"] + " and codigoAnoLetivo=" + lstAnoLetivo.SelectedValue;

                SqlCommand cmdAnoLetivo = new SqlCommand(sqlVerificar, sqlc);
                SqlDataReader myReaderVerificar = cmdAnoLetivo.ExecuteReader();

                if (!myReaderVerificar.HasRows)
                {

                    //Cadastrar Matrícula no banco de dados

                    SqlConnection sqld = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                    sqld.Open();
                    SqlConnection sqle = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                    sqle.Open();

                    string SqlMatricula = "insert into matricula(codigoAluno, codigoAnoLetivo, observacoesMatricula, ";
                    SqlMatricula = SqlMatricula + "codigoSerie, codigoDiaPagamento, codigoModalidadeAula, ";
                    SqlMatricula = SqlMatricula + "codigoTipoPagamento, codigoFormaPagamento) ";
                    SqlMatricula = SqlMatricula + "values(" + Request["codigoAluno"] + ", " + lstAnoLetivo.SelectedValue + ", ";
                    SqlMatricula = SqlMatricula + "'" + txtObservacoes.Text + "', " + lstSerie.SelectedValue + ", ";
                    SqlMatricula = SqlMatricula + "" + lstDiaPagamento.SelectedValue + ", " + lstModalidade.SelectedValue + ", ";
                    SqlMatricula = SqlMatricula + "" + lstTipoPagamento.SelectedValue + ", " + lstFormaPagamento.SelectedValue + ")";

                    SqlCommand cadastrarMatricula = new SqlCommand(SqlMatricula, sqld);
                    cadastrarMatricula.ExecuteNonQuery();
                    cadastrarMatricula.Dispose();


                    //PEGA O ULTIMO REGISTRO DE MATRÍCULA CADASTRADO NO BANCO DE DADOS
                    string max = "select max(codigoMatriculaAluno) as codigoMatriculaAluno from matricula";
                    SqlCommand cmdMax = new SqlCommand(max, sqld);
                    SqlDataReader drMax = cmdMax.ExecuteReader();
                    string codigoMatricula = "";
                    drMax.Read();
                    codigoMatricula = drMax["codigoMatriculaAluno"].ToString();
                    drMax.Close();
                    cmdMax.Dispose();


                    //LISTA TODAS AS DISCIPLINAS CADASTRADAS NO SISTEMA PARA SABER
                    //SE OS CHECKBOX RELACIONADOS NA HORA DA MATRÍCULA ESTÃO MARCADOS
                    //OU NÃO.
                    string sqldisciplina = "select * from disciplina";

                    SqlCommand cmddisciplina = new SqlCommand(sqldisciplina, sqld);
                    SqlDataReader drdisciplina = cmddisciplina.ExecuteReader();

                    string codigoDisciplina = "";
                    string dataInicial = "";
                    string dataFinal = "";

                    if (drdisciplina.HasRows)
                    {
                        while (drdisciplina.Read())
                        {
                            codigoDisciplina = drdisciplina["codigoDisciplina"].ToString();

                            // VERIFICA SE O CHECKBOX ESTÁ MARCADO
                            if (Request[drdisciplina["codigoDisciplina"].ToString()] == codigoDisciplina)
                            {
                                dataFinal = drdisciplina["codigoDisciplina"].ToString() + "dataFinal";
                                dataInicial = drdisciplina["codigoDisciplina"].ToString() + "dataInicial";

                                string insertDisciplinaMatricula = "insert into disciplinaMatricula (codigoDisciplina, codigoMatricula, dataInicial, dataFinal) ";
                                insertDisciplinaMatricula += "values (" + codigoDisciplina + ", " + codigoMatricula + ", '" + Request[dataInicial].ToString() + "', '" + Request[dataFinal].ToString() + "')";

                                SqlCommand cmdInsert = new SqlCommand(insertDisciplinaMatricula, sqle);
                                cmdInsert.ExecuteNonQuery();
                                cmdInsert.Dispose();
                            }
                        }
                    }

                    drdisciplina.Close();
                    drdisciplina.Dispose();

                    string literalc = "<script language=JavaScript>matriculaRealizada();</script>";
                    Panel2.Controls.Add(new LiteralControl(literalc));


                    sqld.Close();
                    sqle.Close();

                }
                else
                {

                    lblValidacao.Text = "A matrícula não pôde ser realizada, pois já existe uma matrícula para este aluno no ano letivo informado.";

                }

                cmdAnoLetivo.Dispose();
                myReaderVerificar.Close();
                sqlc.Close();
            }
            else
            {

                lblValidacao.Text = "A série, turma e ano letivo devem ser selecionados.";

            }

        }

        protected void lstAnoLetivo_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            lstSerie.Items.Clear();

            //Carregar séries

            string sqlSerie = "select * from serie where codigoAnoLetivo = " + lstAnoLetivo.SelectedValue;

            SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
            SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

            ListItem serieSelecione = new ListItem();
            serieSelecione.Value = "0";
            serieSelecione.Text = "Selecione uma série";

            lstSerie.Items.Add(serieSelecione);

            while (myReaderSerie.Read())
            {

                ListItem serie = new ListItem();

                serie.Value = myReaderSerie["codigoSerie"].ToString();
                serie.Text = myReaderSerie["descricaoSerie"].ToString();

                lstSerie.Items.Add(serie);


            }

            cmdSerie.Dispose();
            myReaderSerie.Close();
            sqlc.Close();
            //Finalizar carregamento de séries
        }
    }
}
